﻿Imports System.Collections.Generic


Public Interface IFirePerimeterPath
    Function CountTheNodes() As Integer
    Function FindPathLengthMetres() As Double
    Function FindPathAreaMetresSquared() As Double
    ReadOnly Property FirstNode As IFirePerimeterPathNode
    ReadOnly Property Description As String
    ReadOnly Property SimulationTime As DateTime
End Interface

Public Interface IFirePerimeterPathNode
    ReadOnly Property MetricLocationX As Double
    ReadOnly Property MetricLocationY As Double
    ReadOnly Property NextNode As IFirePerimeterPathNode
End Interface

Public Interface ISpreadPotentialField
    Function GetDirectionalSpreadPotentialForLocation(ByVal LocationX As Double, ByVal LocationY As Double, ByVal DirectionDegrees As Double) As Double
End Interface

Public Interface IMetricCoordinateTwoDimensional
    ReadOnly Property LocationX() As Double
    ReadOnly Property LocationY() As Double
    Function IsSameAs(ByVal OtherCoordinate As IMetricCoordinateTwoDimensional) As Boolean
End Interface

Friend Interface INeighbourNodeFinder
    Function MakeListOfNodesWithCloseNeighbours(ByVal FirePerimeterPath As FirePerimeterPath, ByVal NumberOfNodesInPath As Integer, ByVal InsertNodeThresholdDistanceMetres As Double, ByVal CrossSearchProximityThresholdDistanceMetres As Double) As List(Of cFirePerimeterPathNode)
End Interface